package br.com.cast.paises;

import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.spring.injection.annot.SpringBean;

import br.com.cast.EstudoCasoDropDown.Principal;
import br.com.cast.componente.ComponentUtil;
import br.com.cast.modelo.Pais;
import br.com.cast.services.ServicePais;


public class ListarPaises extends Panel {

	@SpringBean
	private ServicePais servicePais;
	
	public ListarPaises(String id) {
		super(id);
		
		final CadastroPais cadastroPais = new CadastroPais(Principal.ID_CONTEUDO);
		
		adicionaIncluir(cadastroPais);
		
		DataView<Pais> dataView = criaDataView(cadastroPais);
		
		adicionaDataViewePaginacao(dataView);
	} 
	// fim do construtor...




	private void adicionaDataViewePaginacao(DataView<Pais> dataView) {
		dataView.setItemsPerPage(4);
		add(dataView);
		add(new PagingNavigator("paginacao",dataView));
	}




	private void adicionaIncluir(final CadastroPais cadastroPais) {
		add(new Link("incluir"){
			@Override
			public void onClick() {
				cadastroPais.atualizaModel(new Pais());
				redirecionaPagina(cadastroPais);
			}
		});
	}
	

	private DataView<Pais> criaDataView(final CadastroPais cadastroPais) {
		DataView<Pais> dataView = new DataView<Pais>("listarPaises", servicePais) {
			@Override
			protected void populateItem(final Item<Pais> item) {
				final Pais p = item.getModelObject();
				item.add(new Label("nome",p.getNome()));
				item.add(new Label("area",p.getArea()));
				item.add(new Label("continente",p.getContinente()));
				item.add(new Label("populacao",p.getPopulacao()));
				item.add(new Label("pib",p.getPib()));
				
				item.add(new Link("alterar"){
					@Override
					public void onClick() {
						cadastroPais.atualizaModel(item.getDefaultModelObject());
						redirecionaPagina(cadastroPais);
					}
				});
				
//				item.add(new Link("excluir"){
//					@Override
//					public void onClick() {
//						servicePais.excluir(p.getId());
//					}
//				});
				
			} // fim do populated
		}; // fim do DataView
		return dataView;
	}
	
	private void redirecionaPagina(final CadastroPais cadastroPais){
		Principal template = ComponentUtil.getTemplate(this);
		template.replace(cadastroPais);
	}
}
